┌─────────────────────────────────────────────────────────────────────────────┐
│ Option:  MO  MONITOR USERLEVELS.............................................│
└─────────────────────────────────────────────────────────────────────────────┘

Syntax  
═══════════════════════════════════════════════════════════════════════════════
JLUTIL /MO [Parameters] [-Switches]
═══════════════════════════════════════════════════════════════════════════════

Switch Description  
═══════════════════════════════════════════════════════════════════════════════
 -A    Actual Caller only.
 -C    Compile ANSWER*.* Files in GT Format to JLUTIL Format
 -J    Use JLUTIL Format instead of GT Format
 -E    Every User
 -T    using a TagFile
═══════════════════════════════════════════════════════════════════════════════

Param       Description  
═══════════════════════════════════════════════════════════════════════════════
TagFile     Name of a File, which contains the names of these users,
            whose level should be monitored.
═══════════════════════════════════════════════════════════════════════════════

Explanation  
═══════════════════════════════════════════════════════════════════════════════
IF YOU ARE RUNNING THIS MODULE THE FIRST TIME, PLEASE MAKE A BACKUP OF YOUR
USER.CTL AND USER.IDX.

A File named LEVELS.@JL must be setup properly. Here is the format:
                                             
; FORMAT-------------------------------------------------------------- 
; OldLevel[-Range],NewLevel,eXist|Not exist,Kind,AnswerFile, 
; MsgFile To User,Write Answers?, DL/UL(KB),DL-UL(KB),Logons, 
; Give Credits,Give Charges; Comment 
; -------------------------------------------------------------------- 

OldLevel   If a User has this Level, JLUTIL will change his level to
           NewLevel, if the conditions, which are following, are true.
           It is possible to specify a range, eg. T-Z. If the User's
           Level is in this example IN ['T','U','V','W','X','Y','Z'] THEN
           JLUTIL will prove the following conditions. It is also
           possible to include all levels using a '?'.

NewLevel   The User's Level will be changed to this Level, if the follow-
           conditions are true.

Then you can specify, if JLUTIL should search for the User's Name in
a File. You have to setup three fields:

AnswerFile This is the FileName of the List, normally it is ANSWER1.BBS
           or another ANSWER File from GT, but you can also ask JLUTIL
           to search for the User's Name within the JLUTIL LVL_*.@JL
           Files or you can specify ALL_USER.

Kind       Here you have to tell JLUTIL, of which Kind the AnswerFile
           is:
                       G   GT Format
                       J   JL Format   (very fast:  Use /CO)
                       A   ALL_USER
                       N   only a single Name, which should be
                           specified in the AnswerFile field.

Exist      With this field you specify, if this condition is true,
           if JLUTIL finds the User's Name or not.

                                                     Exist    Not Exist
                                                       X          N

           JLUTIL finds the UserName                 TRUE       FALSE

           JLUTIL finds not the UserName             FALSE      TRUE


           So you can change the Level of a User, if he hasn't answered
           ANSWER1.BBS (Kind = N). Or you change the Level of a User,
           if he has answered the Questionaire #1 (Kind = X).

After these tree fields, you have to specify the Name of the MsgFile,
JLUTIL sends to the User, if JLUTIL changes his level:

MsgFile    FileName of the Msg, which you want to be send to the User,
           if his Level will be changed. If you specify [NO_MSG], JLUTIL
           will not send a Msg to the User. The Sysop will get a summary.

Write?     In this field you can specify, if JLUTIL inserts the answers
           from the AnswerFile (eg. ANSWER1.BBS) into the Summary Report
           to the Sysop or Not. [Y/N]. This is useful, if a you don't
           want to inspect ANSWER1.BBS manually, when ever a new user
           has filled out ANSWER1.BBS.

Now are following three conditions, which must be all true, if JLUTIL should
change the User's level:

DL/UL(KB)  This condition is true, if the ratio downloaded kilobytes
           to uploaded kilobytes is bigger than the specified value.
           If you enter zero, this condition is true irrespective of
           the KiloBytes, which the User has downloaded or uploaded.  

           eg:  DL: 1500 KB   UL: 250 KB    

                IF DL/UL(KB) <= 6 THEN FALSE
                IF DL/UL(KB) >  6 THEN TRUE
    

DL-UL(KB)  This condition is true, if the difference downloaded kilobytes
           to uploaded kilobytes is bigger than the specified value.
           If you enter zero, this condition is true irrespective of
           the KiloBytes, which the User has downloaded or uploaded. 

           eg:  DL: 1500 KB   UL: 250 KB    

                IF DL/UL(KB) <= 1250 THEN FALSE
                IF DL/UL(KB) >  1250 THEN TRUE

Logons     This condition is true, if the User has logged on more times
           than the specified value. If you enter zero, this condition
           is true irrespective of number of Calls.

   
With the last two fields you can specify the amount of Credits and Charges
the User will get, if his Level will be changed:

Credits    If JLUTIL changes his level, the User will receive the
           specified amount as credits. 

Charges    If JLUTIL changes his level, the User will have the
           specified amount as charges. 

After these fields you can add a comment starting with a ';' after
the last field:

;Comment   Text



We at WAP-Box give the new callers a level of Z. If he answers the
questionaire, his level will be changed from JLUTIL to T and he will
receive a welcome-message. After 20 calls or a bad download to upload
ratio his level will be decraded to W. Now he receives a msg, that
he has to pay, if he wants to have level T or leave at level W with
less time, no download possibilty and so on. Read LVL_Z_T.MSG and
LVL_T_W.MSG to see, what i mean.


IMPORTANT:   JLUTIL starts for every User with the first line
             of LEVELS.@JL:

eg. Test User has Level A, is not in LVL_065.@JL and the Levels.@JL
File contains:

A  ,Z,N,J,LVL_065.@JL,NO_MSG ,N,   0  ,   0,   0,   0,   0
B-z,T,X,A,ALL_USER   ,NO_MSG ,N,   0  ,   0,   0,   0,   0

this will have the following Effect: Test User: A -> Z -> T

IF the Levels.@JL File contains:

B-z,T,X,A,ALL_USER   ,NO_MSG ,N,   0  ,   0,   0,   0,   0
A  ,Z,N,J,LVL_065.@JL,NO_MSG ,N,   0  ,   0,   0,   0,   0

this will have the following Effect: Test User: A -> Z
═══════════════════════════════════════════════════════════════════════════════
